package com.ylbh.modules.activity.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ylbh.common.pojo.activity.dto.ActivityGoodsDTO;
import com.ylbh.common.pojo.activity.dto.BatchPurchaseGoodsDTO;
import com.ylbh.common.pojo.activity.dto.GoodsListDTO;
import com.ylbh.common.pojo.activity.vo.BatchPurchaseGoodsVO;
import com.ylbh.common.pojo.goods.dto.GoodsClassDTO;
import com.ylbh.common.pojo.goods.vo.ActivitySelectGoodsListVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 活动选择商品信息
 *
 * @author mgh
 * @date 2019-04-22 15:25:57
 */
@Mapper
@Repository
public interface ActivityGoodsMapper extends BaseMapper<GoodsClassDTO> {

    /**
     * 查询分类列表
     * @return
     */
    List<GoodsClassDTO> selectClassList();

    /**
     * 查询商品列表
     * @return
     */
    List<ActivitySelectGoodsListVO> selectGoodsList(GoodsListDTO goodsListDTO);

    /**
     * 查询商品列表的个数
     * @param goodsListDTO
     * @return
     */
    Integer getGoodsListCount(GoodsListDTO goodsListDTO);

    /**
     * 通过id查询商品部分信息，补充到活动商品里
     * @param id
     * @return
     */
    ActivityGoodsDTO getActivityGoodsById(Integer id);

    /**
     * 添加批量采购商品
     * @param batchPurchaseGoodsDTO
     */
    void saveBatchPurchaseGoods(BatchPurchaseGoodsDTO batchPurchaseGoodsDTO);

    /**
     * 获取批量采购商品列表
     * @param goodsListDTO
     * @return
     */
    List<BatchPurchaseGoodsVO> selectBatchPurchaseGoodsList(GoodsListDTO goodsListDTO);

    /**
     * 获取批量采购商品总量
     * @param goodsListDTO
     * @return
     */
    int selectBatchPurchaseGoodsCount(GoodsListDTO goodsListDTO);

    /**
     * 移除批量采购商品
     * @param ids
     */
    void deleteBatchPurchaseGoods(@Param("ids") Integer[] ids);

    /**
     * 获取采购分类
     * @return
     */
    List<GoodsClassDTO> queryPurchaseClassList();

    /**
     * 根据批采分类查询出下级未添加过的商品列表
     * @param dto
     * @param page
     * @return
     */
    List<ActivitySelectGoodsListVO> selectLevelClassGoodsList(@Param(value = "dto") GoodsListDTO dto, Page<Integer> page);

    /**
     * 添加商品到采购分类
     * @param classId
     * @param goodsId
     */
    void insertPurchaseGoods(Integer classId, String goodsId);

    /**
     * 根据采购分类查询商品列表
     * @param dto
     * @param page
     * @return
     */
    List<BatchPurchaseGoodsVO> selectPurchaseGoods(@Param(value = "dto") GoodsListDTO dto, Page<Integer> page);

    /**
     * 删除采购中间表信息
     * @param ids
     */
    void deleteGoodsPurchase(@Param(value = "ids") Integer[] ids);

    /**
     * 删除批采分类下的商品
     * @param classId
     * @param goodsId
     */
    void deletePurchaseClassGoodsByClassAndGoodsId(String classId, String goodsId);
}
